/*
 * IVCRReply.java
 *
 * Created on January 5, 2006, 1:25 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package org.mbari.vcr;

import org.mbari.util.IObservable;

/**
 * @author  brian
 */
public interface IVCRReply extends IObservable {


    /**
	 * @return  The error object associated with this reply
	 * @see  org.mbari.vcr.VCRError
	 * @uml.property  name="vcrError"
	 * @uml.associationEnd  
	 */
    IVCRError getVcrError();

    /**
	 * @return  The state object associated with this reply
	 * @see  org.mbari.vcr.VCRState
	 * @uml.property  name="vcrState"
	 * @uml.associationEnd  
	 */
    IVCRState getVcrState();

    /**
	 * @return  The timecode object associated with this reply
	 * @see  org.mbari.vcr.VCRTimecode
	 * @uml.property  name="vcrTimecode"
	 * @uml.associationEnd  
	 */
    IVCRTimecode getVcrTimecode();

    /**
	 * <p><!-- Method description --></p>
	 * @return
	 * @uml.property  name="vcrUserbits"
	 * @uml.associationEnd  
	 */
    IVCRUserbits getVcrUserbits();

    /**
     * Checks to see if the reply is a reply to a Status sense (also called GET_STATUS
     * 
     * @return True if he reply contains a status update
     */
    boolean isStatusReply();

    /**
     * Checks to see if he reply is a response to a timecode command
     * 
     * @return True if the reply is for a timecode
     */
    boolean isTimecodeReply();

    /**
     * <p><!-- Method description --></p>
     * 
     * @return 
     */
    boolean isUserbitsReply();
    
    boolean isAck();
    
    boolean isNack();


    
}
